home *** CD-ROM | disk | FTP | other *** search
/ JCSM Shareware Collection 1993 November / JCSM Shareware Collection - 1993-11.iso / cl760 / rrtr10.lzh / RRTRACK.PRG < prev    next >
Text File  |  1993-09-02  |  53KB  |  2,220 lines

  1. procedure MASTMENU
  2. RESTORE FROM ident.mem ADDITIVE
  3. CLEAR
  4. IF .NOT. PRINDEF
  5. PRINCON()
  6. ENDIF
  7. IF .NOT. PAIDFOR
  8. REGREM()
  9. ENDIF
  10. CLEAR
  11. @1,1 say mScrnForm[1]
  12. @2,1 say mScrnForm[2]
  13. @3,1 say mScrnForm[3]
  14. @4,1 say mScrnForm[4]
  15. @5,1 say mScrnForm[5]
  16. @6,1 say mScrnForm[6]
  17. @7,1 say mScrnForm[7]
  18. @8,1 say mScrnForm[8]
  19. @9,1 say mScrnForm[9]
  20. @10,1 say mScrnForm[10]
  21. @11,1 say mScrnForm[11]
  22. @12,1 say mScrnForm[12]
  23. @13,1 say mScrnForm[13]
  24. @14,1 say mScrnForm[14]
  25. @15,1 say mScrnForm[15]
  26. @16,1 say mScrnForm[16]
  27. @17,1 say mScrnForm[17]
  28. @18,1 say mScrnForm[18]
  29. @19,1 say mScrnForm[19]
  30. @20,1 say mScrnForm[20]
  31. @21,1 say mScrnForm[21]
  32. @3,55-len(district)/2 say district
  33. @4,55-len(troopnr)/2 say troopnr
  34. IF .NOT. PAIDFOR
  35. @5,55-len([UNREGISTERED EVALUATION COPY])/2 SAY [UNREGISTERED EVALUATION COPY]
  36. ENDIF
  37. cMenuTitle = [MASTER MENU]
  38. #DEFINE cBoxString CHR(213)+CHR(205)+CHR(184)+CHR(179)+CHR(190)+CHR(205)+CHR(212)+CHR(179)+CHR(32)
  39. @10,47,20,65 box cBoxString
  40. @11,51 SAY cMenuTitle                    
  41. @13,49 PROMPT "1-RANGERS"
  42. @14,49 PROMPT "2-COMMANDERS"
  43. @15,49 PROMPT "3-UPDATE RECORDS"
  44. @16,49 PROMPT "4-REPORTS"
  45. @17,49 PROMPT "5-PRINTER SELECT"
  46. @18,49 PROMPT "6-BACKUP DATA"
  47. @19,49 PROMPT "EXIT"
  48. MENU TO choice
  49. DO CASE
  50. CASE choice == 1
  51. SCTMENU()
  52. CASE choice == 2
  53. SCTRMENU()
  54. CASE choice == 3
  55. RECMAIN()
  56. CASE choice == 4
  57. REPMENU()
  58. CASE choice == 5
  59. PRINCON()
  60. CASE choice == 6
  61. FILEBACK()
  62. CASE choice == 7
  63. CLEAR
  64. ?[Thanks for using RR TRACKER]
  65. ?
  66. QUIT
  67. ENDCASE
  68. *--------------------------------------------------------------------
  69. PROCEDURE SCTMENU
  70. @15,4,20,31 BOX cBoxString
  71. @16,5 PROMPT "ADD A RANGER'S RECORD"
  72. @17,5 PROMPT "VIEW/EDIT A RANGER'S RECORD"
  73. @18,5 PROMPT "DELETE A RANGER'S RECORD"
  74. @19,5 PROMPT "RETURN TO MASTER MENU"
  75. MENU TO choice2
  76. DO CASE
  77. CASE choice2 == 1
  78. ADDRCD("Y")
  79. CASE choice2 == 2
  80. VEMENU()
  81. CASE choice2 == 3
  82. DELREC()
  83. CASE choice2 == 4
  84. RETURN
  85. ENDCASE
  86. RETURN
  87. *--------------------------------------------------------------------
  88. PROCEDURE SCTRMENU
  89. @15,4,20,33 BOX cBoxString
  90. @16,5 PROMPT "ADD AN COMMANDER'S RECORD"
  91. @17,5 PROMPT "VIEW/EDIT AN COMMANDER'S RECORD"
  92. @18,5 PROMPT "DELETE AN COMMANDER'S RECORD"
  93. @19,5 PROMPT "RETURN TO MASTER MENU"
  94. MENU TO choice2
  95. DO CASE
  96. CASE choice2 == 1
  97. ADDRCD("A")
  98. CASE choice2 == 2
  99. VEMENU()
  100. CASE choice2 == 3
  101. DELREC()
  102. CASE choice2 == 4
  103. RETURN
  104. ENDCASE
  105. RETURN
  106. *---------------------------------------------------------------------
  107. PROCEDURE RECMAIN
  108. *PROCEDURE TO DETERMINE WHICH .DBF WILL BE UPDATED WITH DATA
  109. @14,19,23,53 BOX cBoxString
  110. @15,20 PROMPT "1 - ADD MERIT EARNED"
  111. @16,20 PROMPT "2 - ADD TRAINING EXPERIENCE"
  112. @17,20 PROMPT "3 - ADD ADVANCEMENT EARNED"
  113. @18,20 PROMPT "4 - ADD OFFICE HELD"
  114. @19,20 PROMPT "5 - ADD UNIFORM INSPECTION SCORES"
  115. @20,20 PROMPT "6 - ADD OUTPOST ACTIVITY"
  116. @21,20 PROMPT "7 - ADD MEETING ATTENDANCE"
  117. @22,20 PROMPT "8 - RETURN TO MASTER MENU"
  118. MENU TO choice3
  119. DO CASE
  120. CASE choice3 = 1
  121. ADDAT("A")
  122. CASE choice3 = 2 
  123. ADDAT("C")
  124. CASE choice3 = 3
  125. ADDAT("B")
  126. CASE choice3 = 4
  127. ADDAT("D")
  128. CASE choice3 = 5
  129. UNIADD()
  130. CASE choice3 = 6
  131. TRPACTY()
  132. CASE choice3 = 7
  133. ATTEND()
  134. CASE choice3 = 8
  135. RETURN
  136. OTHERWISE
  137. RETURN
  138. ENDCASE
  139. RETURN
  140. *---------------------------------------------------------------------
  141. PROCEDURE REPMENU
  142. @15,1,20,34 BOX cBoxString
  143. @16,2 PROMPT "1 - PRINT ROSTER DATA"
  144. @17,2 PROMPT "2 - PRINT MAILING LABELS"
  145. @18,2 PROMPT "3 - PRINT/VIEW FORMATTED REPORTS"
  146. @19,2 PROMPT "4 - RETURN TO MASTER MENU"
  147. MENU TO choice2
  148. DO CASE
  149. CASE choice2 == 1
  150. MENROST()
  151. CASE choice2 == 2
  152. MENLABE()
  153. CASE choice2 == 3
  154. MENREP()
  155. CASE choice2 == 4
  156. RETURN
  157. ENDCASE
  158. RETURN
  159. *--------------------------------------------------------------------
  160. PROCEDURE MENROST
  161. @15,40,22,74 BOX cBoxString
  162. @16,41 PROMPT "1 - OUTPOST ROSTER (RANGERS ONLY)"
  163. @17,41 PROMPT "2 - OUTPOST ROSTER (COMMANDERS ONLY)"
  164. @18,41 PROMPT "3 - PATROL ROSTER"
  165. @19,41 PROMPT "4 - FORMER MEMBERS ROSTER"
  166. @20,41 PROMPT "5 - OUTPOST TELEPHONE CALL SHEET"
  167. @21,41 PROMPT "6 - RETURN TO MASTER MENU"
  168. MENU TO choice2
  169. MSG4 = [  Please ensure that your printer is online and ready.]
  170. DO CASE
  171. CASE choice2 == 1
  172. SET MARGIN TO 2
  173. SET DEVICE TO PRINTER
  174. set prin on
  175. ?mboldon
  176. set prin off
  177. SET CONSOLE OFF
  178. @ 2,40-len([ASSEMBLIES OF GOD ROYAL RANGERS])/2 SAY [ASSEMBLIES OF GOD ROYAL RANGERS]
  179. @ 4,40-LEN(DISTRICT)/2 SAY DISTRICT
  180. @ 5,40-LEN(TROOPNR)/2 SAY TROOPNR
  181. @ 6,40-len([ROSTER OF RANGERS])/2 SAY [ROSTER OF RANGERS]
  182. @ 7,5 SAY [Effective Date: ]+dtoc(date())
  183. USE ROSTER
  184. INDEX on lname+fname to temp
  185. GO TOP
  186. SET PRINT ON
  187. ?mboldoff
  188. ?mprcomp
  189. SET PRINT OFF
  190. LABEL FORM ROSTER TO PRINT FOR MBRNR <500
  191. CLOSE DATABASES
  192. SET PRINT ON
  193. ?mpr10cpi
  194. SET PRINT OFF
  195. SET CONSOLE ON
  196. SET MARGIN TO 5
  197. SET DEVICE TO SCREEN
  198. EJECT
  199. CASE choice2 == 2
  200. SET MARGIN TO 2
  201. set prin on
  202. ?mboldon
  203. set prin off
  204. SET DEVICE TO PRINTER
  205. SET CONSOLE OFF
  206. @ 2,40-len([ASSEMBLIES OF GOD ROYAL RANGERS])/2 SAY [ASSEMBLIES OF GOD ROYAL RANGERS]
  207. @ 4,40-LEN(DISTRICT)/2 SAY DISTRICT
  208. @ 5,40-LEN(TROOPNR)/2 SAY TROOPNR
  209. @ 6,40-len([ROSTER OF COMMANDERS])/2 SAY [ROSTER OF COMMANDERS]
  210. @ 7,5 SAY [Effective Date: ]+dtoc(date())
  211. SET DEVICE TO SCREEN
  212. USE ROSTER
  213. INDEX on lname+fname to temp
  214. GO TOP
  215. SET PRINT ON
  216. ?mboldoff
  217. ?mprcomp
  218. SET PRINT OFF
  219. LABEL FORM COMIT ALL TO PRINT FOR MBRNR >499
  220. CLOSE DATABASES
  221. SET PRINT ON
  222. ?mpr10cpi
  223. sET PRINT OFF
  224. SET MARGIN TO 5
  225. SET CONSOLE ON
  226. EJECT
  227. CASE choice2 == 3
  228. USE ROSTER
  229. INDE ON PATROL TO TEMP
  230. SET FILTER TO MBRNR < 500
  231. GO TOP
  232. SET CONSOLE OFF
  233. SET PRINT ON
  234. ?mboldoff
  235. ?mprcomp
  236. SET PRINT OFF
  237. REPORT FORM PATROST HEADING TROOPNR+[;]+[PATROL ROSTER] TO PRINT
  238. CLOSE DATABASES
  239. SET PRINT ON
  240. ?mpr10cpi
  241. SET PRINT OFF
  242. SET CONSOLE ON
  243. CASE choice2 == 4
  244. SET MARGIN TO 2
  245. set prin on
  246. ?mboldon
  247. set prin off
  248. SET DEVICE TO PRINTER
  249. SET CONSOLE OFF
  250. @ 1,40-len([ASSEMBLIES OF GOD ROYAL RANGERS])/2 SAY [ASSEMBLIES OF GOD ROYAL RANGERS]
  251. @ 3,40-LEN(DISTRICT)/2 SAY DISTRICT
  252. @ 4,40-LEN(TROOPNR)/2 SAY TROOPNR
  253. @ 5,40-len([ROSTER OF FORMER MEMBERS])/2 SAY [ROSTER OF FORMER MEMBERS]
  254. @ 6,5 SAY [Effective Date: ]+dtoc(date())
  255. SET DEVICE TO SCREEN
  256. USE FORMRMBR
  257. INDEX ON LNAME+FNAME TO TEMP
  258. GO TOP
  259. SET PRINT ON
  260. ?mboldoff
  261. ?mprcomp
  262. SET PRINT OFF
  263. LABEL FORM FORMRMBR ALL TO PRINT
  264. CLOSE DATABASES
  265. SET PRINT ON
  266. ?mpr10cpi
  267. SET PRINT OFF
  268. SET MARGIN TO 5
  269. EJECT
  270. CASE choice2 == 5
  271. *a procedure that will print a list of all members with their names,
  272. *home phone, mother & fathers office phones or member's office phone
  273. clear
  274. @10,20 say [Printing specified report...]
  275. set console off
  276. use roster
  277. inde on lname+fname to temp
  278. SET FILTER TO MBRNR < 500
  279. go top
  280. repo form callshet heading +district+";"+troopnr+";"+[OUTPOST RANGER CALL LIST] TO PRINT
  281. SET FILTER TO MBRNR >499
  282. GO TOP
  283. repo form callshet heading district+";"+troopnr+";"+[OUTPOST COMMANDER CALL LIST] TO PRINT
  284. close data
  285. erase temp.ntx
  286. set console on
  287. return
  288. CASE choice2 == 6
  289. RETURN
  290. OTHERWISE
  291. RETURN
  292. ENDCASE
  293. RETURN
  294. *--------------------------------------------------------------------
  295. PROCEDURE MENLABE
  296. CLEAR
  297. @3,40-LEN([LABEL SELECTION MENU])/2 SAY [LABEL SELECTION MENU]
  298. @5,5,14,29 BOX cBoxString
  299. @6,11 SAY [LABEL STYLES]
  300. @7,6 PROMPT "'TO THE PARENTS OF:...'"
  301. @8,6 PROMPT "OUTPOST COMMANDERS ONLY"
  302. @9,6 PROMPT "GENERIC OUTPOST LABEL"
  303. @10,6 PROMPT "RETURN TO MASTER MENU"
  304. MENU TO choice2
  305. DO CASE
  306. CASE choice2 == 1
  307. MENSIZE("A")
  308. CASE choice2 == 2
  309. MENSIZE("B")
  310. CASE choice2 == 3
  311. MENSIZE("C")
  312. CASE choice2 == 4
  313. RETURN
  314. ENDCASE
  315. RETURN
  316. *---------------------------------------------------------------------
  317. PROCEDURE MENSIZE
  318. PARAMETER mLabeType
  319. @5,30,15,65 BOX cBoxString
  320. @6,43 SAY [LABEL SIZES]
  321. @7,32 PROMPT [1 - 3.5" x 15/16" x 1]
  322. @8,32 PROMPT [2 - 3.5" x 15/16" x 2]
  323. @9,32 PROMPT [3 - 3.5" x 15/16" x 3]
  324. @10,32 PROMPT [4 - 4" x 1 7/16" x 1]
  325. @11,32 PROMPT [5 - 3.2" x 11/12 x 3 CHESHIRE]
  326. @12,32 PROMPT [6 - ASCII FILE, Comma Delimited]
  327. @13,32 PROMPT [7 - ASCII FILE, No Delimiters]
  328. @14,32 PROMPT [8 - RETURN TO MASTER MENU]
  329. MENU TO choice3
  330. if choice3 == 8
  331. return
  332. endif
  333. MSG1 = [PRESS ANY KEY WHEN PRINTER IS ONLINE AND READY TO GO]
  334. MSG2 = [CREATING FILE "MAILING.TXT" WITH DESIGNATED RECORDS.]
  335. MSG3 = [RR TRACKER WILL NOT PRODUCE ASCII FILE AS REQUESTED.]
  336. MSG4 = [PRESS ANY KEY TO CONTINUE]
  337. @18,40-LEN(MSG1)/2 SAY MSG1
  338. INKEY(0)
  339. SET CONSOLE OFF
  340. DO CASE
  341. CASE choice3 == 1 .AND. mLabeType == [A]
  342. USE ROSTER
  343. INDE ON ZIP+PLUS4 TO TEMP
  344. SET FILTER TO MBRNR < 500
  345. GO TOP
  346. LABEL FORM PARX1 SAMPLE TO PRINT
  347. CLOSE DATA
  348. ERASE TEMP.NDX
  349. CASE choice3 == 1 .AND. mLabeType == [B]
  350. USE ROSTER
  351. INDE ON ZIP+PLUS4 TO TEMP
  352. SET FILTER TO MBRNR > 499
  353. GO TOP
  354. LABEL FORM 3515161 SAMPLE TO PRINT
  355. CLOSE DATA
  356. ERASE TEMP.NDX
  357. CASE choice3 == 1 .AND. mLabeType == [C]
  358. SET MARGIN TO 0
  359. USE RETURN
  360. COUNTER = 0
  361. DO WHILE COUNTER < 25
  362. go bottom
  363. append blank
  364. REPL DISTNAME WITH DISTRICT
  365. REPL TRPNR WITH TROOPNR
  366. COUNTER = COUNTER+1
  367. ENDDO WHILE COUNTER < 25
  368. GO TOP
  369. LABEL FORM GENX1 SAMPLE TO PRINT
  370. USE RETURN
  371. SET SAFETY OFF
  372. ZAP
  373. SET SAFETY ON
  374. CLOSE DATA
  375. SET MARGIN TO 5
  376. CASE choice3 == 2 .AND. mLabeType == [A]
  377. USE ROSTER
  378. INDE ON ZIP+PLUS4 TO TEMP
  379. SET FILTER TO MBRNR < 500
  380. GO TOP
  381. LABEL FORM PARX2 SAMPLE TO PRINT
  382. CLOSE DATA
  383. ERASE TEMP.NDX
  384. CASE choice3 == 2 .AND. mLabeType == [B]
  385. USE ROSTER
  386. INDE ON ZIP+PLUS4 TO TEMP
  387. SET FILTER TO MBRNR > 499
  388. GO TOP
  389. LABEL FORM 3515162 SAMPLE TO PRINT
  390. CLOSE DATA
  391. ERASE TEMP.NDX
  392. CASE choice3 == 1 .AND. mLabeType == [C]
  393. SET MARGIN TO 0
  394. USE RETURN
  395. COUNTER = 0
  396. DO WHILE COUNTER < 25
  397. go bottom
  398. append blank
  399. REPL DISTNAME WITH DISTRICT
  400. REPL TRPNR WITH TROOPNR
  401. COUNTER = COUNTER+1
  402. ENDDO WHILE COUNTER < 25
  403. GO TOP
  404. LABEL FORM GENX2 SAMPLE TO PRINT
  405. USE RETURN
  406. SET SAFETY OFF
  407. ZAP
  408. SET SAFETY ON
  409. CLOSE DATA
  410. SET MARGIN TO 5
  411. CASE choice3 == 3 .AND. mLabeType == [A]
  412. USE ROSTER
  413. INDE ON ZIP+PLUS4 TO TEMP
  414. SET FILTER TO MBRNR < 500
  415. GO TOP
  416. LABEL FORM PARX3 SAMPLE TO PRINT
  417. CLOSE DATA
  418. ERASE TEMP.NDX
  419. CASE choice3 == 3 .AND. mLabeType == [B]
  420. USE ROSTER
  421. INDE ON ZIP+PLUS4 TO TEMP
  422. SET FILTER TO MBRNR > 499
  423. GO TOP
  424. LABEL FORM 3515163 SAMPLE TO PRINT
  425. CLOSE DATA
  426. ERASE TEMP.NDX
  427. CASE choice3 == 3 .AND. mLabeType == [C]
  428. SET MARGIN TO 0
  429. USE RETURN
  430. COUNTER = 0
  431. DO WHILE COUNTER < 25
  432. go bottom
  433. append blank
  434. REPL DISTNAME WITH DISTRICT
  435. REPL TRPNR WITH TROOPNR
  436. COUNTER = COUNTER+1
  437. ENDDO WHILE COUNTER < 25
  438. GO TOP
  439. LABEL FORM GENX3 SAMPLE TO PRINT
  440. USE RETURN
  441. SET SAFETY OFF
  442. ZAP
  443. SET SAFETY ON
  444. CLOSE DATA
  445. SET MARGIN TO 5
  446. CASE choice3 == 4 .AND. mLabeType == [A]
  447. USE ROSTER
  448. INDE ON ZIP+PLUS4 TO TEMP
  449. SET FILTER TO MBRNR < 500
  450. GO TOP
  451. LABEL FORM PARX4 SAMPLE TO PRINT
  452. CLOSE DATA
  453. ERASE TEMP.NDX
  454. CASE choice3 == 4 .AND. mLabeType == [B]
  455. USE ROSTER
  456. INDE ON ZIP+PLUS4 TO TEMP
  457. SET FILTER TO MBRNR > 499
  458. GO TOP
  459. LABEL FORM 3515161 SAMPLE TO PRINT
  460. CLOSE DATA
  461. ERASE TEMP.NDX
  462. CASE choice3 == 4 .AND. mLabeType == [C]
  463. SET MARGIN TO 0
  464. USE RETURN
  465. COUNTER = 0
  466. DO WHILE COUNTER < 25
  467. go bottom
  468. append blank
  469. REPL DISTNAME WITH DISTRICT
  470. REPL TRPNR WITH TROOPNR
  471. COUNTER = COUNTER+1
  472. ENDDO WHILE COUNTER < 25
  473. GO TOP
  474. LABEL FORM GENX4 SAMPLE TO PRINT
  475. USE RETURN
  476. SET SAFETY OFF
  477. ZAP
  478. SET SAFETY ON
  479. CLOSE DATA
  480. SET MARGIN TO 5
  481. CASE choice3 == 5 .AND. mLabeType == [A]
  482. USE ROSTER
  483. INDE ON ZIP+PLUS4 TO TEMP
  484. SET FILTER TO MBRNR < 500
  485. GO TOP
  486. LABEL FORM PARCHES SAMPLE TO PRINT
  487. CLOSE DATA
  488. ERASE TEMP.NDX
  489. CASE choice3 == 5 .AND. mLabeType == [B]
  490. USE ROSTER
  491. INDE ON ZIP+PLUS4 TO TEMP
  492. SET FILTER TO MBRNR > 499
  493. GO TOP
  494. LABEL FORM CHESHIRE SAMPLE TO PRINT
  495. CLOSE DATA
  496. ERASE TEMP.NDX
  497. CASE choice3 == 5 .AND. mLabeType == [C]
  498. SET MARGIN TO 0
  499. USE RETURN
  500. COUNTER = 0
  501. DO WHILE COUNTER < 25
  502. go bottom
  503. append blank
  504. REPL DISTNAME WITH DISTRICT
  505. REPL TRPNR WITH TROOPNR
  506. COUNTER = COUNTER+1
  507. ENDDO WHILE COUNTER < 25
  508. GO TOP
  509. LABEL FORM GENCHES SAMPLE TO PRINT
  510. USE RETURN
  511. SET SAFETY OFF
  512. ZAP
  513. SET SAFETY ON
  514. CLOSE DATA
  515. SET MARGIN TO 5
  516. CASE choice3 == 6 .AND. mLabeType == [A]
  517. *PRODUCES A COMMA DLIMITED ASCII FILE CONTAINING DATA MEETING SELECTED 
  518. *CRITERIA
  519. @20,40-LEN(MSG2)/2 SAY MSG2
  520. USE ROSTER
  521. INDE ON ZIP TO TEMP
  522. SET FILTER TO MBRNR < 500
  523. GO TOP
  524. COPY TO MAILING.TXT FIELDS FNAME,LNAME,ADDRESS,CITY,STATE,ZIP DELIMITED
  525. CLOSE DATA
  526. ERASE TEMP.NTX
  527. CASE choice3 == 6 .AND. mLabeType == [B]
  528. *PRODUCES A COMMA DLIMITED ASCII FILE CONTAINING DATA MEETING SELECTED 
  529. *CRITERIA
  530. @20,40-LEN(MSG2)/2 SAY MSG2
  531. USE ROSTER
  532. INDE ON ZIP TO TEMP
  533. SET FILTER TO MBRNR > 499
  534. GO TOP
  535. COPY TO MAILING.TXT FIELDS FNAME,LNAME,ADDRESS,CITY,STATE,ZIP DELIMITED
  536. CLOSE DATA
  537. ERASE TEMP.NTX
  538. CASE choice3 == 6 .AND. mLabeType == [C]
  539. @20,40-LEN(MSG3)/2 SAY MSG3
  540. @21,40-LEN(MSG4)/2 SAY MSG4
  541. INKEY(0)
  542. CASE choice3 == 7 .AND. mLabeType == [A]
  543. @20,40-LEN(MSG2)/2 SAY MSG2
  544. USE ROSTER
  545. INDE ON ZIP TO TEMP
  546. SET FILTER TO MBRNR < 500
  547. GO TOP
  548. COPY TO MAILING.TXT FIELDS FNAME,LNAME,STREET,CITY,STATE,ZIP SDF
  549. CLOSE DATA
  550. ERASE TEMP.NTX
  551. CASE choice3 == 7 .AND. mLabeType == [B]
  552. @20,40-LEN(MSG2)/2 SAY MSG2
  553. USE ROSTER
  554. INDE ON ZIP TO TEMP
  555. SET FILTER TO MBRNR > 499
  556. GO TOP
  557. COPY TO MAILING.TXT FIELDS FNAME,LNAME,STREET,CITY,STATE,ZIP SDF
  558. CLOSE DATA
  559. ERASE TEMP.NTX
  560. CASE choice3 == 7 .AND. mLabeType == [C]
  561. @20,40-LEN(MSG3)/2 SAY MSG3
  562. @21,40-LEN(MSG4)/2 SAY MSG4
  563. INKEY(0)
  564. OTHERWISE
  565. RETURN
  566. ENDCASE
  567. SET CONSOLE ON
  568. RETURN
  569. *---------------------------------------------------------------------
  570. PROCEDURE MENREP
  571. @13,35,22,74 BOX cBoxString
  572. @14,36 PROMPT "1 - VIEW OUTPOST ATTENDANCE REPORT"
  573. @15,36 PROMPT "2 - PRINT OUTPOST ATTENDANCE REPORT"
  574. @16,36 PROMPT "3 - PRINT INDIVIDUAL RECORD"
  575. @17,36 PROMPT "4 - VIEW SKILLS SEARCH REPORT"
  576. @18,36 PROMPT "5 - PRINT SKILLS SEARCH REPORT"
  577. @19,36 PROMPT "6 - PRINT PRE-COUNCIL OF ACHIEVEMENT HONORS REPORT"
  578. MENU TO choice2
  579. MSG4 = [  Please ensure that your printer is online and ready.]
  580. @23,40-LEN(MSG4)/2 SAY MSG4
  581. DO CASE
  582. CASE choice2 == 1
  583. PRINATT("V")
  584. CASE choice2 == 2
  585. PRINATT("P")
  586. CASE choice2 == 3
  587. PRININDV()
  588. CASE choice2 == 4
  589. PRINSKIL("V")
  590. CASE choice2 == 5
  591. PRINSKIL("P")
  592. CASE choice2 == 6
  593. HONORS()
  594. OTHERWISE
  595. RETURN
  596. ENDCASE
  597. RETURN
  598. *---------------------------------------------------------------------
  599. *A procedure to add records to ROSTER.DBF
  600. PROCEDURE Addrcd
  601. PARAMETERS ADDMBR
  602. clear
  603. store upper(addmbr) to addmbr
  604. SET TALK OFF
  605. USE ROSTER
  606. INDE ON MBRNR TO TEMP
  607. SET FILTER TO MBRNR < 500
  608. GO BOTT
  609. STORE MBRNR TO LASTSC
  610. IF LASTSC = 0
  611. LASTSC = LASTSC+1
  612. ENDIF
  613. SET FILT TO MBRNR > 499
  614. GO BOTT
  615. STORE MBRNR TO LASTAD
  616. IF LASTAD = 0
  617. LASTAD = LASTAD+501
  618. ENDIF
  619. CLOSE DATABASES
  620. erase TEMP.NTX
  621. USE Roster
  622. INDEX ON LNAME+FNAME TO TEMP
  623. GO BOTT
  624. APPEND BLANK
  625. repl begdate with date()
  626. do case
  627. case addmbr = [A]
  628. lastad = lastad+1
  629. repl mbrnr with lastad
  630. case addmbr = [Y]
  631. lastsc = lastsc+1
  632. repl mbrnr with lastsc
  633. endcase
  634. FILBLAN1()
  635. READ
  636. IF LEN(TRIM(LNAME)) > 0
  637. IsBlank = .F.
  638. else
  639. IsBlank = .T.
  640. ENDIF LEN(TRIM(LNAME)) >0
  641. IF ISBLANK
  642. DELETE
  643. ENDIF ISBLANK
  644. USE Roster INDE temp
  645. PACK
  646. CLOSE DATA
  647. ERASE TEMP.NTX
  648. CLEAR
  649. RETURN
  650. *END Addrcd
  651. *___________________________________________________________________________
  652. procedure filblan1
  653. clear
  654. @ 0,0 SAY "RECORD:"
  655. @ 0,8 SAY RECNO() PICTURE "999"
  656. @ 0,72 SAY DATE()
  657. @ 1,0 SAY " "
  658. TEXT
  659.  PERSONAL│
  660.    DATA  │  First Name & Initials       Family Name           Member Number
  661.          │                                                                
  662.          │
  663.          │  Street or P.O. Box Address     City                  State
  664.          │
  665.          │       ZIP     Plus 4                            Area  Telephone
  666.          │              (if known)                         Code
  667.  ──────┬─┴──────────────────────────────────────────────────────────────────
  668.  OUT-  │
  669.   POST │    Patrol          Office            Advance       Date
  670.  DATA  │     Name           in O/P             Level         Adv
  671.        │
  672.  ──────┴────────────────────────────────────────────────────────────────────
  673.                                   FAMILY DATA             M  D  Y
  674.                                           Date of Birth:
  675.  Mother's Name:                           Mom's Work Phone:
  676.  Father's Name:                           Dad's Work Phone:
  677.                                                             Area    Number Ext
  678.                                                             Code
  679.              ESC TO ABORT|<cr> TO MOVE TO NEXT BLANK|   TO MOVE BACK
  680.  
  681. ENDTEXT
  682. IF INKEY() = 27
  683.    RETURN
  684. ENDIF
  685. @2,12 get Fname picture [!!!!!!!!!!!!]
  686. @2,40 get Lname picture [!!!!!!!!!!!!!!!]
  687. @2,67 SAY mbrnr
  688. @5,13 get address
  689. @5,44 get city
  690. @5,67 GET STATE
  691. @7,17 get ZIP
  692. @7,25 GET PLUS4
  693. @7,58 get AREAcode
  694. @7,67 get phone
  695. @11,9 get patrol picture [!!!!!!!!!!!!!!!]
  696. @11,30 get office picture [!!!!]
  697. @11,45 get rank picture [!!!!!!!!!!]
  698. @11,60 GET DOR picture [9999]
  699. @17,57 get birthdate
  700. @18,16 get momname picture [!XXXXXXXXXXXXXXXXXXXXXXXXX]
  701. @18,60 get momareacod
  702. @18,68 get momphone
  703. @18,75 get momext
  704. @19,16 get dadname PICTURE [!XXXXXXXXXXXXXXXXXXXXXXXXX]
  705. @19,60 get dadAREAcod
  706. @19,68 get dadphone
  707. @19,75 get ext
  708. @22,54 SAY CHR(24)
  709. *end filblan1
  710. *____________________________________________________________________________
  711. PROCEDURE delrec
  712. *PROCEDURE TO DELETE A member FROM ROSTER.DBF
  713. CLEAR
  714. ReadyAdd = .F.
  715. DO WHILE .NOT. ReadyAdd
  716. @1,0 SAY " "
  717. TEXT
  718.    The purpose of this module is to DELETE a member of the Outpost from the
  719.    active database.  Be sure this is what you want to do before proceeding.
  720.    This procedure will transfer all traces of a member to the FORMRMBR data-
  721.    base where the information will be stored in perpetuity.
  722.                   WARNING:  THIS IS AN IRREVERSIBLE PROCEDURE!
  723.  
  724.       Enter a Blank at the next prompt to abort this procedure.
  725.  
  726. endtext
  727. ACCEPT [     Please type in Member's LAST name: ] to cGetName
  728. if len(trim(cGetName)) = 0
  729. return
  730. endif
  731. STORE UPPER(cGetName) TO cGetName
  732. USE Roster
  733. INDE on lname+fname to temp
  734. FIND &cGetName
  735. CORRECTNAME = .F.
  736. DO WHILE .NOT. CORRECTNAME
  737. *Verify that the record "found" is the Counselor wanted.
  738. CLEAR
  739. DO filblan2
  740. @22,0 say "Is this the Member who is to be DELETED FROM the DATABASE?"
  741. WAIT [Y/N?  ] TO RightName
  742. STORE UPPER(RightName) TO RightName
  743. DO CASE
  744. CASE RightName = [Y]
  745. CORRECTNAME = .T.
  746. ReadyAdd = .T.
  747. CASE RIGHTnAME = [N]
  748. SKIP
  749. if eof()
  750. ?
  751. ?
  752. ?[The name you typed in apparently is not in the database.]
  753. ?[Please verify spelling and restart this procedure.]
  754. wait
  755. return
  756. endif eof()
  757. LOOP
  758. ENDCASE
  759. ENDDO WHILE .NOT. CORRECTNAME
  760. ENDDO WHILE .NOT. ReadyAdd
  761. CLEAR
  762. mHoldname = FNAME
  763. mNrHold=mbrnr
  764. DELETE
  765. USE actylog
  766. ?
  767. ?[CLEARING DATA FROM ACTIVITY LOG]
  768. DELE ALL FOR MBRNR = mNrHold
  769. PACK
  770. USE advance
  771. ?
  772. ?[CLEARING DATA FROM ADVANCEMENT LOG]
  773. DELE ALL FOR MBRNR = mNrHold
  774. PACK
  775. USE attend
  776. ?
  777. ?[CLEARING DATA FROM ATTENDANCE LOG]
  778. DELE ALL FOR MBRNR = mNrHold
  779. PACK
  780. USE merit
  781. ?
  782. ?[CLEARING DATA FROM MERIT BADGE LOG]
  783. DELE ALL FOR MBRNR = mNrHold
  784. PACK
  785. USE office
  786. ?
  787. ?[CLEARING DATA FROM OFFICES HELD LOG]
  788. DELE ALL FOR MBRNR = mNrHold
  789. PACK
  790. USE training
  791. ?
  792. ?[CLEARING DATA FROM TRAINING LOG]
  793. DELE ALL FOR MBRNR = mNrHold
  794. PACK
  795. USE uniform
  796. ?
  797. ?[CLEARING DATA FROM UNIFORM SCORES LOG]
  798. DELE ALL FOR MBRNR = mNrHold
  799. PACK
  800. ?
  801. ?[NOW ADDING ]+TRIM(mHoldName)+[ TO THE FORMER MEMBER DATABASE.]
  802. USE Roster
  803. SET FILTER TO DELETED()
  804. COPY TO temp
  805. SET FILTER TO
  806. PACK
  807. USE formrmbr
  808. APPE FROM temp
  809. REPL enddate WITH date()
  810. RECALL ALL
  811. CLOSE DATA
  812. ERASE temp.dbf
  813. RUN DEL *.ntx
  814. RETURN
  815. *END delrec
  816. *____________________________________________________________________________
  817. procedure filblan2
  818. clear
  819. @ 0,0 SAY "RECORD:"
  820. @ 0,8 SAY RECNO() PICTURE "9,999,999"
  821. @ 0,72 SAY DATE()
  822. @ 1,0 SAY " "
  823. TEXT
  824.  PERSONAL│
  825.    DATA  │  First Name & Initials       Family Name           Unique Member
  826.          │                                                        Number
  827.          │
  828.          │  Street or P.O. Box Address                   City
  829.          │
  830.          │       ZIP     Plus 4                            Area  Telephone
  831.          │              (if known)                         Code
  832.  ──────┬─┴──────────────────────────────────────────────────────────────────
  833.  OUT-  │
  834.   POST │    Patrol          Office            Advance       Date
  835.  DATA  │     Name           in T/P             Level         Adv
  836.        │
  837.  ──────┴────────────────────────────────────────────────────────────────────
  838.  
  839.                 PRESS ESCAPE KEY TO ABORT THIS RECORD
  840.                 <cr> TO MOVE TO THE NEXT BLANK FIELD
  841. ENDTEXT
  842.  
  843. IF INKEY() = 27
  844.    RETURN
  845. ENDIF
  846. @2,12 get Fname picture [!!!!!!!!!!!!]
  847. @2,40 get Lname picture [!!!!!!!!!!!!!!!]
  848. @2,67 SAY mbrnr
  849. @5,17 get address
  850. @5,57 get city
  851. @7,17 get ZIP
  852. @7,25 GET PLUS4
  853. @7,58 get AREAcode
  854. @7,67 get phone
  855. @11,9 get patrol picture [!!!!!!!!!!!!!!!]
  856. @11,30 get office picture [!!!!]
  857. @11,45 get rank picture [!!!!!!!!!!]
  858. @11,60 GET DOR picture [9999]
  859. *end filblan2
  860. *____________________________________________________________________________
  861. PROCEDURE VEMENU
  862. *A PROCEDURE TO PROVIDE A MENU TO VIEW/EDIT THE VARIOUS COMPONENTS OF A
  863. *SPECIFIC INDIVIDUAL'S RECORDS
  864. @15,35,24,57 BOX cBoxString
  865. @16,36 PROMPT "ROSTER DATA"
  866. @17,36 PROMPT "ADVANCEMENT DATA"
  867. @18,36 PROMPT "OFFICE HELD DATA"
  868. @19,36 PROMPT "ACTIVITY DATA"
  869. @20,36 PROMPT "MERIT BADGE DATA"
  870. @21,36 PROMPT "TRAINING DATA"
  871. @22,36 PROMPT "UNIFORM DATA"
  872. @23,36 PROMPT "RETURN TO MASTER MENU"
  873. MENU TO choice3
  874. DO case
  875. case choice3 = 1
  876. TARGETDBF = "ROSTER"
  877. case choice3 = 2
  878. TARGETDBF = "ADVANCE"
  879. case choice3 = 3
  880. TARGETDBF = "OFFICE"
  881. case choice3 = 4
  882. TARGETDBF = "ACTYLOG"
  883. case choice3 = 5
  884. TARGETDBF = "MERIT"
  885. case choice3 = 6
  886. TARGETDBF = "TRAINING"
  887. case choice3 = 7
  888. TARGETDBF = "UNIFORM"
  889. otherwise
  890. RETURN
  891. ENDCASE
  892. SCEDIT()
  893. *END EDITMENU
  894. *-------------------------------------------------------------------------
  895. PROCEDURE scedit
  896. *A procedure to edit records in ROSTER.DBF
  897. CLEAR
  898. corname = .f.
  899. do while .not. corname
  900. ACCEPT [   Which member's record do you wish to edit? (LAST NAME)  ] to choice
  901. if len(ltrim(choice)) = 0
  902. clear all
  903. RETURN
  904. endif
  905. store upper(choice) to choice
  906. use ROSTER
  907. inde on lname+fname to temp
  908. go top
  909. find &choice
  910. if .not. found()
  911. ?
  912. ?[A record with that Last Name does not exist in the database.  Please]
  913. ?[re-enter that Last Name again.]
  914. loop
  915. endif
  916. corname = .t.
  917. CORRECTNAME = .F.
  918. DO WHILE .NOT. CORRECTNAME
  919. *Verify that the record "found" is the RECORD wanted.
  920. CLEAR
  921. @5,5 SAY TRIM(FNAME)+[ ]+LNAME
  922. @6,5 SAY ADDRESS
  923. @10,10 say "Is this the Member who is to be EDITED?"
  924. WAIT [Y/N?  ] TO RightName
  925. STORE UPPER(RightName) TO RightName
  926. DO CASE
  927. CASE RightName = [Y]
  928. CORRECTNAME = .T.
  929. CASE RIGHTnAME = [N]
  930. SKIP
  931. if eof()
  932. ?
  933. ?
  934. ?[The name you typed in apparently is not in the database.]
  935. ?[Please verify spelling.]
  936. wait
  937. RETURN
  938. endif eof()
  939. LOOP
  940. ENDCASE
  941. ENDDO WHILE .NOT. CORRECTNAME
  942. NAMEDIT = TRIM(FNAME)+[ ]+TRIM(LNAME)
  943. GETMBRNR = MBRNR
  944. Enddo while .not. corname
  945. CLEAR
  946. USE &TARGETDBF
  947. ?TARGETDBF
  948. IF TARGETDBF = [ROSTER]
  949.   SET FILTER TO LNAME = CHOICE
  950. ELSE
  951.   SET FILTER TO MBRNR = GETMBRNR
  952. ENDIF
  953. GO TOP
  954. dispdat()
  955. CLEAR
  956. PACK
  957. CLOSE DATABASES
  958. run del *.ntx
  959. RELEASE TARGETDBF
  960. RETURN
  961. *end scedit
  962. *____________________________________________________________________________
  963. PROCEDURE dispdat
  964. TEXT
  965.  
  966.    ┌──────────────────────────────────────────────┐
  967.    │  <cr>    │          │  Esc   │       │ Del   │
  968.    │ Begin/   │  MOVE TO │ End    │ MOVE  │Delete │
  969.    │  End     │  LFT/RT  │  Edit  │ UP/DN │Record │
  970.    │ EDITING  │  COLUMN  │Session │ 1 ROW │       │
  971. ENDTEXT
  972. @ 1,50 SAY NAMEDIT
  973. @ 4,19 say chr(27)
  974. @ 4,22 say chr(26)
  975. @ 4,38 say chr(24)
  976. @ 4,41 say chr(25)
  977. BROWSE(8,0,22,79)
  978. *end RECEDIT
  979. *___________________________________________________________________________
  980. PROCEDURE ADDAT
  981. PARAMETER GetDBF
  982. CLEAR
  983. ?
  984. ?
  985. ?
  986. ACCEPT [  Whose record do you want to update?  (Last Name) ] to getname
  987. IF LEN(TRIM(GetName)) = 0
  988. RETURN
  989. ENDIF
  990. STORE UPPER(getname) to getname
  991. USE ROSTER
  992. index on lname+fname to temp
  993. go top
  994. FIND &getname
  995. ?
  996. proper = .n.
  997. do while .not. proper
  998. ?[   The record to be modified belongs to:]
  999. ?[         ]+trim(fname)+[ ]+trim(lname)
  1000. ?
  1001. wait [  Correct?  (Y/N)  ] to correct
  1002. store upper(correct) to correct
  1003. if correct = [N]
  1004. skip
  1005. if eof()
  1006. ?[   The record you are looking for does not exist for]
  1007. ??[ this Ranger]
  1008. ?[   or Commander.  Please verify as to name and restart this]
  1009. ??[ procedure.]
  1010. WAIT [   PRESS ESCAPE]
  1011. RETURN
  1012. endif
  1013. loop
  1014. endif
  1015. proper = .y.
  1016. enddo
  1017. store mbrnr to getnumber
  1018. CLOSE DATA
  1019. ?
  1020. clear
  1021. ?
  1022. ?
  1023. ?
  1024. *Now, to get that database and add a record
  1025. do case
  1026. case getdbf = [A]
  1027. ACCEPT [  What MERIT was earned? ] to earned
  1028. STORE UPPER(Earned) TO Earned
  1029. use MERIT
  1030. append blank
  1031. repl mbrnr with getnumber
  1032. repl badge with earned
  1033. accept [  What date was this MERIT earned? (YYMM) ] to date
  1034. repl earndate with date
  1035. close data
  1036. case getdbf = [B]
  1037. Accept [  What Advancement Level was earned? ] to earned
  1038. use ADVANCE
  1039. Append blank
  1040. store upper(earned) to earned
  1041. Repl mbrnr with getnumber
  1042. repl rank with earned
  1043. accept [  What date was this Advancement earned? (YYMM) ] to date
  1044. repl earndate with date
  1045. close data
  1046. case getdbf = [C]
  1047. accept [  What Training was completed? ] to earned
  1048. use TRAINING
  1049. append blank
  1050. store upper(earned) to earned
  1051. repl mbrnr with getnumber
  1052. repl tng with earned
  1053. accept [  What date was this training completed? (YYMM) ] to date
  1054. repl datecompl with date
  1055. close data
  1056. case getdbf = [D]
  1057. accept [  What office was earned or appointed? ] to earned
  1058. use OFFICE
  1059. Append blank
  1060. store upper(earned) to earned
  1061. repl mbrnr with getnumber
  1062. repl office with earned
  1063. accept [  What date did this Term of Office start? (YYMM) ] to date
  1064. repl begdate with date
  1065. close data
  1066. endcase
  1067. CLOSE DATA
  1068. run del *.ntx
  1069. RETURN
  1070. *end scupdate
  1071. *___________________________________________________________________________
  1072. procedure uniadd
  1073. CLEAR
  1074. TEXT
  1075.                        POSTING UNIFORM INSPECTION SCORES
  1076.  
  1077.   After you read this, you will be asked to provide the date of the meeting
  1078.   during which the inspection was held.  Once the computer has the re-
  1079.   quired data, it will then go through the troop roster asking you for the
  1080.   score of each member attended the meeting.  At the prompt, simply type in
  1081.   the numeric score for that Ranger (or Commander) and press Enter to go to 
  1082.   the next record.
  1083.   Press any key to continue...
  1084. endtext
  1085. wait [ ]
  1086. *Obtaining the needed data for subsequent posting
  1087. info = .f.
  1088. do while .not. info
  1089. ?
  1090. accept [  What Was the date of the meeting?  (YYMMDD)  ] to meetdate
  1091. clear
  1092. ?
  1093. ?[  The meeting date is:  ]+meetdate
  1094. ?
  1095. ?
  1096. wait [  Correct? (Y/N)  ] to correct
  1097. store upper(correct) to correct
  1098. if correct = [Y]
  1099. info = .t.
  1100. else
  1101. info = .f.
  1102. endif
  1103. enddo
  1104. clear
  1105. text
  1106.  
  1107.     You will now be presented with the name of each member of the Outpost.
  1108.  Type in the score each received on their inspection form when prompted to
  1109.  do so.
  1110.  
  1111. endtext
  1112. wait
  1113. select a
  1114. use roster
  1115. index on lname+fname to temp
  1116. select b
  1117. use uniform
  1118. select a
  1119. do while .not. eof()
  1120. clear
  1121. ?[  Was ]+trim(fname)+[ ]+trim(lname)+[ inspected?]
  1122. wait [ (Y/N?)  ] to part
  1123. store upper(part) to part
  1124. if part = [N]
  1125. skip
  1126. loop
  1127. endif
  1128. store mbrnr to lognr
  1129. select b
  1130. append blank
  1131. replace mbrnr with lognr
  1132. replace date with meetdate
  1133. Accept [  What was his/her score? ] to scorein
  1134. store val(scorein) to scorein
  1135. repl score with scorein
  1136. select a
  1137. skip
  1138. enddo
  1139. close databases
  1140. run del *.ntx
  1141. RETURN
  1142. *END UNIADD
  1143. *____________________________________________________________________________
  1144. PROCEDURE TRPACTY
  1145. *A PROGRAM THAT WILL ALLOW OPERATOR TO LOG A CAMPING ACTIVITY
  1146. *THE PROGRAM WILL SOLICIT DATA ABOUT THE OUTING AND INPUT
  1147. *THAT DATA TO EACH RECORD THE OPERATOR INDICATES HAS
  1148. *PARTICIPATED IN THE ACTIVITY
  1149. SET TALK OFF
  1150. CLEAR
  1151. STORE TROOPNR+[ ACTIVITY LOG] TO TITLE
  1152. @1,40-LEN(TITLE)/2 SAY TITLE
  1153. TEXT
  1154.  
  1155.        After you read this, you will be asked to provide certain data
  1156.      about the activity you are logging.  Once the computer has the re-
  1157.      quired data, it will then go through the Outpost roster asking you
  1158.      if each member participated in the activity.  At the prompt,
  1159.      simply type "Y" or "N" for each name.
  1160.  
  1161. endtext
  1162. wait
  1163. info = .f.
  1164. do while .not. info
  1165. clear
  1166. ?
  1167. ?[     Enter a <CR> at this next prompt to abort this procedure.]
  1168. ?
  1169. accept [  Where did you go on this outing?  ] to destination
  1170. if len(trim(destination)) = 0
  1171. RETURN
  1172. endif
  1173. store upper(destination) to destination
  1174. ?
  1175. accept [  What date did you leave the assemble area? (YYMMDD)  ] to tvldate
  1176. ?
  1177. accept [  How many days were you out?  ] to daycount
  1178. ?
  1179. accept [  How many nights were you out?  ] to nightcount
  1180. ?
  1181. clear
  1182. ?
  1183. ?[   You went to:  ]+destination
  1184. ?
  1185. ?[   You left on: ]+tvldate
  1186. ?
  1187. ?[   You were out for ]
  1188. ??daycount
  1189. ??[ days and ]
  1190. ??nightcount
  1191. ??[ nights.]
  1192. ?
  1193. ?
  1194. wait [   Correct? (Y/N)  ] to correct
  1195. store upper(correct) to correct
  1196. if correct = [Y]
  1197. info = .t.
  1198. else
  1199. info = .f.
  1200. endif
  1201. enddo
  1202. clear
  1203. text
  1204.  
  1205.          You will now be presented with the name of each member of
  1206.      the Outpost.  Answer (Y/N) to each name prompt as that individual
  1207.      participated in the activity previously described.
  1208.  
  1209. endtext
  1210. WAIT
  1211. *computing date for filter to roster
  1212. store [/]+substr(TVLdate,1,2) to tvlyear
  1213. store substr(TVLdate,3,2) to tvlmonth
  1214. store [/]+substr(TVLdate,5,2) to tvlday
  1215. store tvlmonth+tvlday+tvlyear to tvlfilt
  1216. SELECT A
  1217. use ROSTER
  1218. index on lname+fname to temp
  1219. SET FILTER TO BEGDATE <=ctod(tvlfilt)
  1220. GO TOP
  1221. select b
  1222. use ACTYLOG
  1223. select a
  1224. do while .not. eof()
  1225. clear
  1226. ?[Did ]+trim(fname)+[ ]+trim(lname)+[ participate?]
  1227. wait [(Y/N?) ] to part
  1228. store upper(part) to part
  1229. if part = [N]
  1230. skip
  1231. loop
  1232. endif
  1233. store mbrnr to lognr
  1234. select b
  1235. append blank
  1236. replace mbrnr with lognr
  1237. replace location with destination
  1238. replace date with tvldate
  1239. replace days with VAL(daycount)
  1240. replace nights with VAL(nightcount)
  1241. select a
  1242. skip
  1243. enddo
  1244. close databases
  1245. RETURN
  1246. *end trpacty
  1247. *____________________________________________________________________________
  1248.  
  1249. *A procedure to fill records in ATNDGEN.DBF, which will prepare data for
  1250. *a visual report on troop attendance
  1251. procedure PRINATT
  1252. PARAMETER PRINSTAT
  1253. set decimal to 0
  1254. CLEAR
  1255. text
  1256.   In order to compute the attendance averages for your Rangers, you must
  1257.   first define the period of time in which you are interested.  The first
  1258.   date you will be asked to type in will be the earliest date you want
  1259.   considered.  The second date you will be asked for is the latest date you
  1260.   want considered. This module does not access Commander's records
  1261.   REMEMBER: The format for the dates is numbers, YYMMDD; 890203 would mean
  1262.   3 February 1989.
  1263.  
  1264. endtext
  1265. allright = .f.
  1266. Do while .not. allright
  1267. ACCEPT [ Type in the Begin Date: ] to opendate
  1268. IF LEN(LTRIM(OPENDATE)) = 0
  1269. ?[     This field requires data. No blanks here, please.]
  1270. loop
  1271. endif
  1272. ?
  1273. ?
  1274. ACCEPT [ Type in the End Date: ] to closedate
  1275. IF LEN(LTRIM(closeDATE)) = 0
  1276. ?[   This field requires data. No blanks here, please.]
  1277. loop
  1278. endif
  1279. ?
  1280. ?
  1281. ?[  You want to consider only information on attendance between ]
  1282. ??opendate
  1283. ?[ and ]
  1284. ??closedate
  1285. ?
  1286. wait [ Is this correct? (Y/N) ] TO ALLRIGHT
  1287. STORE UPPER(ALLRIGHT) TO ALLRIGHT
  1288. IF ALLRIGHT = [N]
  1289. allright = .f.
  1290. @12,0 CLEAR
  1291. LOOP
  1292. else
  1293. allright = .t.
  1294. ENDIF
  1295. ENDDO WHILE .NOT. ALRIGHT
  1296. clear
  1297. SET TALK OFF
  1298. ?
  1299. ?[Now processing data to generate the report you requested.]
  1300. ?[Please stand by.]
  1301. goforit = .t.
  1302. select 1
  1303. use ROSTER
  1304. inde on lname+fname to temp
  1305. set filter to mbrnr < 499
  1306. go top
  1307. select 2
  1308. use ATTEND
  1309. index on date to temp1
  1310. set filter to date > opendate .and. date < closedate
  1311. go top
  1312. do while goforit
  1313. select 1
  1314. store trim(fname)+[ ]+trim(lname) to holdname
  1315. store mbrnr to getnr
  1316. STORE DTOC(BEGDATE) TO MBEGDATE
  1317. STORE SUBSTR(MBEGDATE,7,2) TO FIRSTTHIRD
  1318. STORE SUBSTR(MBEGDATE,1,2) TO SECONDTHIRD
  1319. STORE SUBSTR(MBEGDATE,4,2) TO THIRDTHIRD
  1320. STORE FIRSTTHIRD+SECONDTHIRD+THIRDTHIRD TO MBEGDATE
  1321. select 2
  1322. count all for mbrnr = getnr to atndcount
  1323. COUNT ALL FOR MBRNR = 0 .AND. DATE >= MBEGDATE TO TOTPOSS
  1324. select 3
  1325. use atndgen
  1326. GO BOTTOM
  1327. append blank
  1328. repl scoutname with holdname
  1329. repl totattend with atndcount
  1330. repl possattend with totposs
  1331. select 1
  1332. skip
  1333. if .not. eof()
  1334. loop
  1335. else
  1336. goforit = .f.
  1337. endif
  1338. enddo while goforit
  1339. close databases
  1340. use atndgen
  1341. INDE ON SCOUTNAME TO ATNDTEMP
  1342. go top
  1343. clear screen
  1344. do case
  1345. case prinstat = [V]
  1346. report form PRNtatnd
  1347. wait
  1348. case prinstat = [P]
  1349. report form PRNTATND to print
  1350. EJECT
  1351. endcase
  1352. close data
  1353. run del *.NTX
  1354. USE ATNDGEN
  1355. ZAP
  1356. CLOSE DATABASES
  1357. RETURN
  1358. *end prinatt
  1359. *___________________________________________________________________________
  1360. *A procedure to print a Transfer Form on a Ranger/Commander in Outpost
  1361. procedure prinindv
  1362. *Determines proper record for transfer sheet
  1363. SET TALK OFF
  1364. FINISHED = .F.
  1365. do while .not. finished
  1366. clear
  1367. ACCEPT [Which Member's record do you want to print?  ] to getname
  1368. if len(trim(getname)) = 0
  1369. RETURN
  1370. endif
  1371. sTORE UPPER(getname) to getname
  1372. USE ROSTER
  1373. index on lname+fname to temp
  1374. go top
  1375. FIND &getname
  1376. ?
  1377. proper = .n.
  1378. clear
  1379. do while .not. proper
  1380. ?[  The Individual Record to be printed belongs to:]
  1381. ?[        ]+trim(fname)+[ ]+trim(lname)
  1382. ?
  1383. wait [Correct?  (Y/N)  ] to correct
  1384. store upper(correct) to correct
  1385. if correct = [N]
  1386. skip
  1387. loop
  1388. endif CORRECT = [N]
  1389. proper = .y.
  1390. enddo WHILE .NOT. PROPER
  1391. store mbrnr to getnumber
  1392. STORE FNAME TO NAME
  1393. store begdate to started
  1394. store dtoc(started) to started1
  1395. store substr(started1,7,2) to year
  1396. store substr(started1,1,2) to month
  1397. store substr(started1,4,2) to day
  1398. store year+month+day to started
  1399. finished = .t.
  1400. enddo while .not. finished
  1401. *DISABLES SCREEN TO SPEED PROCESS
  1402. CLEAR
  1403. ?
  1404. ?[Printing an Individual Record for ]+trim(fname)+[ ]+trim(lname)
  1405. *Prints header data for the report
  1406. SET CONsOLE OFF
  1407. set prin on
  1408. ?mboldon
  1409. set prin off
  1410. SET DEVICE TO PRINT
  1411. @ 2,40-len([ASSEMBLIES OF GOD ROYAL RANGERS])/2 SAY [ASSEMBLIES OF GOD ROYAL RANGERS]
  1412. @ 4,40-len(DISTRICT)/2 SAY DISTRICT
  1413. @ 5,40-len(TROOPNR)/2 SAY TROOPNR
  1414. @ 7,40-LEN([INDIVIDUAL MEMBER'S RECORD])/2 SAY [INDIVIDUAL MEMBER'S RECORD]
  1415. SET PRIN ON
  1416. ?
  1417. ?[ PREPARED ON:  ]
  1418. ??DATE()
  1419. ?
  1420. ?
  1421. ?[Name: ]+trim(fname)+[ ]+trim(lname)
  1422. ?mboldoff+[Address: ]+trim(address)+[; ]+trim(city)+[ ]+state+[  ]+zip+[ ]+plus4
  1423. ?[________________________________________________________________________]
  1424. SET PRINT OFF
  1425. CLOSE DATA
  1426. SET PRINT ON
  1427. ?
  1428. ?[ADVANCEMENT RECORD:]
  1429. ?
  1430. ?[Advancement Level Attained   Date Attained]
  1431. ?[--------------------------   -------------]
  1432. SET PRINt off
  1433. USE ADVANCE
  1434. INDEX on earndate to temp
  1435. SET FILTER TO MBRNR = GETNUMBER
  1436. GO TOP
  1437. DO WHILE .NOT. EOF()
  1438. SET PRINT ON
  1439. ?RANK+[                    ]+EARNDATE
  1440. IF EOF()
  1441. SET PRINT OFF
  1442. EXIT
  1443. ELSE
  1444. SKIP
  1445. ENDIF  EOF()
  1446. ENDDO WHILE .NOT. EOF()
  1447. CLOSE DATA
  1448. SET PRINT ON
  1449. ?
  1450. ?
  1451. ?[MERITS EARNED:]
  1452. ?
  1453. ?[BADGE                    DATE EARNED]
  1454. ?[--------------------     -----------]
  1455. SET PRINT OFF
  1456. USE MERIT
  1457. INDEX on earndate to temp
  1458. SET FILTER TO MBRNR = GETNUMBER
  1459. GO TOP
  1460. DO WHILE .NOT. EOF()
  1461. SET PRINT ON
  1462. ?BADGE+[        ]+EARNDATE
  1463. IF EOF()
  1464. SET PRINT OFF
  1465. EXIT
  1466. ELSE
  1467. SKIP
  1468. ENDIF EOF()
  1469. ENDDO WHILE .NOT. EOF()
  1470. CLOSE DATA
  1471. SET PRINT ON
  1472. ?
  1473. ?
  1474. ?[OFFICES HELD:]
  1475. ?
  1476. ?[OFFICE                      FROM             TO]
  1477. ?[-------------------        ------          ------]
  1478. SET PRINT OFF
  1479. USE OFFICE
  1480. INDEX on begdate to temp
  1481. SET FILTER TO MBRNR = GETNUMBER
  1482. GO TOP
  1483. DO WHILE .NOT. EOF()
  1484. IF LEN(TRIM(ENDDATE)) = 0
  1485. END = [PRESENT]
  1486. ELSE
  1487. END = ENDDATE
  1488. ENDIF
  1489. SET PRINT ON
  1490. ?office+[        ]+BEGDATE+[            ]+END
  1491. SET PRINT OFF
  1492. IF EOF()
  1493. EXIT
  1494. ELSE
  1495. SKIP
  1496. ENDIF EOF()
  1497. ENDDO WHILE .NOT. EOF()
  1498. CLOSE DATA
  1499. SET PRINT ON
  1500. ?
  1501. ?
  1502. ?[TRAINING RECEIVED:]
  1503. ?
  1504. ?[TRAINING SESSION OR COURSE                     DATE COMPLETED]
  1505. ?[--------------------------                     --------------]
  1506. SET PRINT OFF
  1507. USE TRAINING
  1508. INDEX on datecompl to temp
  1509. SET FILTER TO MBRNR = GETNUMBER
  1510. GO TOP
  1511. DO WHILE .NOT. EOF()
  1512. SET PRINT ON
  1513. ?TNG+[           ]+DATECOMPL
  1514. IF EOF()
  1515. SET PRINT OFF
  1516. EXIT
  1517. ELSE
  1518. SKIP
  1519. ENDIF EOF()
  1520. ENDDO WHILE .NOT. EOF()
  1521. CLOSE DATA
  1522. SET PRINT ON
  1523. ?
  1524. ?
  1525. ?[OUTPOST ACTIVITY PARTICIPATION:]
  1526. ?
  1527. ?[LOCATION                        DATE       NR OF NIGHTS  ]
  1528. ?[-------------------------      ------      ------------]
  1529. SET PRINT OFF
  1530. USE ACTYLOG
  1531. INDEX on date to temp
  1532. SET FILTER TO MBRNR = GETNUMBER
  1533. GO TOP
  1534. DO WHILE .NOT. EOF()
  1535. SET PRINT ON
  1536. ?LOCATION+[      ]+DATE+[            ]+LTRIM(STR(NIGHTS))
  1537. IF EOF()
  1538. SET PRINT OFF
  1539. EXIT
  1540. ELSE
  1541. SKIP
  1542. ENDIF EOF()
  1543. ENDDO WHILE .NOT. EOF()
  1544. CLOSE DATA
  1545. SET PRINT ON
  1546. ?
  1547. ?
  1548. ?[UNIFORM INSPECTION DATA:]
  1549. ?
  1550. ?[DATE OF INSPECTION       SCORE]
  1551. ?[------------------       -----]
  1552. SET PRINT OFF
  1553. USE UNIFORM
  1554. INDEX on date to temp
  1555. SET FILTER TO MBRNR = GETNUMBER
  1556. GO TOP
  1557. DO WHILE .NOT. EOF()
  1558. SET PRINT ON
  1559. ?[     ]+DATE+[              ]
  1560. ??SCORE
  1561. IF EOF()
  1562. SET PRINT OFF
  1563. EXIT
  1564. ELSE
  1565. SKIP
  1566. ENDIF EOF()
  1567. SET PRINT OFF
  1568. ENDDO WHILE .NOT. EOF()
  1569. CLOSE DATA
  1570. IF GETNUMBER < 500
  1571. USE ATTEND
  1572. DO WHILE .NOT. EOF()
  1573. INDE ON DATE TO TEMP
  1574. SET FILTER TO MBRNR = 0 .AND. DATE >= [&STARTED]
  1575. GO TOP
  1576. COUNT ALL TO POSSATND
  1577. SET FILTER TO MBRNR = GETNUMBER
  1578. GO TOP
  1579. COUNT ALL TO ATTENDED
  1580. CLOSE DATA
  1581. SET PRINT ON
  1582. ?
  1583. ?
  1584. ?[ATTENDANCE SUMMARY:]
  1585. ?
  1586. ?[ Since joining the Outpost (or since the Outpost started using RR TRACKER),]
  1587. ?[ Ranger ]+getname+[ has attended ]
  1588. ??LTRIM(STR(attended))
  1589. ??[ out of ]
  1590. ??LTRIM(STR(POSSATND))
  1591. ??[ Troop meetings. Using these]
  1592. ?[ figures, his attendance average is ]
  1593. ??LTRIM(STR(round((ATTENDED/POSSATND)*100,2)))
  1594. ??[%.]
  1595. ENDDO WHILE .NOT. EOF()
  1596. ENDI ( MBRNR < 500)
  1597. SET PRINT ON
  1598. ?
  1599. ?
  1600. ?[I CERTIFY THAT THE ABOVE INFORMATION IS CORRECT BASED UPON]
  1601. ?[ALL INFORMATION AVAILABLE FROM TROOP RECORDS]
  1602. ?
  1603. ?
  1604. ?
  1605. ?
  1606. ?[                                   OUTPOST COMMANDER]
  1607. SET PRINT OFF
  1608. close data
  1609. run del *.ntx
  1610. EJECT
  1611. SET DEVICE TO SCREEN
  1612. SET CONSOLE ON
  1613. RETURN
  1614. *END PRININDV
  1615. *____________________________________________________________________________
  1616. procedure PRINSKIL
  1617. *A PROGRAM TO DETERMINE WHICH RANGER HAVE SPECIFIED SKILLS OR TRAINING.
  1618. PARAMETER PrinStat
  1619. CLEAR
  1620. SET TALK OFF
  1621. TEXT
  1622.  
  1623.    This module will provide you with a printed list of Rangers or Commanders
  1624.    in your Outpost who possess whichever skills you tell the computer you're
  1625.    looking for.  This assumes, of course, that records exist in either the
  1626.    Merit database or the Training database which might refer to those skills.
  1627.  
  1628.    The computer will ask you for the skill you're looking for.  What it
  1629.    needs, to then research your records, is a word, or even a partial word,
  1630.    that might have been entered as a Badge in the Merit file or as a course 
  1631.    title or subject in the Training file.  The less specific you make your 
  1632.    search specification, the more likely you are to find something in these 
  1633.    databases that responds; unfortunately, you are also more likely to get a 
  1634.    lot more junk this way. It's a gamble and practice makes your selection 
  1635.    process more successful.
  1636.  
  1637. endtext
  1638. wait
  1639. clear
  1640. text
  1641.    Here's an example.
  1642.  
  1643.    Over a period of time, you have entered many First Aid Awards in the Merit
  1644.    database.  You've also entered several non-Red Cross First Aid Awards
  1645.    in the Training database as the one place to enter these miscellaneous 
  1646.    skills. You've also, unfortunately, entered a basic photography training 
  1647.    course, entitled "First Attempts at Pictures", your Guide attended. A 
  1648.    search for people with "First" skills will get this photographic entry as 
  1649.    well as the "First Aid" entries. Of course, using "First Aid" as your 
  1650.    selection criteria will also get you a listing of "First Aid for Canoes," 
  1651.    a course your Lieutenant Commander took last year!
  1652.  
  1653.    Take your time and practice a little.  This module will help your Outpost
  1654.    plan their year once you get the hang of it. I mean, it's only paper!
  1655.  
  1656. endtext
  1657. wait
  1658. skilready = .f.
  1659. do while .not. skilready
  1660. clear
  1661. ?
  1662. ?[  Now, which skill do you want to search for?]
  1663. ?
  1664. ACCEPT [  Enter skill, now:  ] to getskill
  1665. if len(ltrim(getskill)) = 0
  1666. ?[  No blanks in this field, please.]
  1667. loop
  1668. endif
  1669. skilready = .t.
  1670. store upper(getskill) to getskill
  1671. enddo while .not. skilready
  1672. ?
  1673. ?
  1674. ?[  You are tracking which Rangers or Commanders might have some skill in]
  1675. ?[  ]+getskill+[.]
  1676. ?[  Notice that the skills are, now, in upper case.  This was done because]
  1677. ?[  RR TRACKER automatically puts all data entries into upper case and]
  1678. ?[  this will ensure that you will find something, if it was ever entered.]
  1679. ?
  1680. wait
  1681. clear
  1682. ?
  1683. ?[Please stand by.]
  1684. ?
  1685. IF prinstat = [P]
  1686. set console off
  1687. endif
  1688. finished = .f.
  1689. do while .not. finished
  1690. if prinstat = [P]
  1691. set print on
  1692. endif
  1693. clear
  1694. ?
  1695. ?
  1696. ?[This is a skill search of MERIT.DBF and TRAINING.DBF for any entry]
  1697. ?[which approximates:]
  1698. ?[               ]+ getskill
  1699. ?
  1700. ?[FROM MERIT.DBF]
  1701. ?
  1702. set print off
  1703. linecount = 9
  1704. SELECT A
  1705. USE MERIT
  1706. inde on badge to temp
  1707. select b
  1708. use ROSTER
  1709. select a
  1710. set filter to [&getskill] $ badge
  1711. go top
  1712. do while .not. eof()
  1713. if eof()
  1714. if prinstat = [P]
  1715. set print on
  1716. endif
  1717. ?[  Nothing meeting that description was found in MERIT.DBF.]
  1718. ?
  1719. set print off
  1720. linecount = linecount+2
  1721. endif
  1722. Store badge to printskill
  1723. store mbrnr to getnumber
  1724. select b
  1725. locate for mbrnr = getnumber
  1726. store trim(fname)+[ ]+lname to printname
  1727. select a
  1728. if prinstat = [P]
  1729. set print on
  1730. endif
  1731. ?printname+[   ]+printskill
  1732. set print off
  1733. linecount = linecount+1
  1734. if prinstat = [V] .and. linecount >=23
  1735. wait
  1736. linecount = 0
  1737. endif
  1738. skip
  1739. enddo while .not. eof()
  1740. close databases
  1741. erase temp.ntx
  1742. if prinstat = [P]
  1743. set print on
  1744. endif
  1745. ?
  1746. ?
  1747. ?[FROM TRAINING.DBF]
  1748. ?
  1749. set print oFF
  1750. linecount = linecount+4
  1751. SELECT A
  1752. USE TRAINING
  1753. inde on tNG to temp
  1754. select b
  1755. use ROSTER
  1756. select a
  1757. set filter to [&getskill] $ tNG
  1758. go top
  1759. do while .not. eof()
  1760. if eof()
  1761. if prinstat = [P]
  1762. set print on
  1763. endif
  1764. ?[Nothing meeting that description was found in TRAINING.DBF.]
  1765. ?
  1766. set print off
  1767. exit
  1768. endif
  1769. store TNG to printskill
  1770. store mbrnr to getnumber
  1771. select b
  1772. locate for mbrnr = getnumber
  1773. store trim(fname)+[ ]+lname to printname
  1774. select a
  1775. if prinstat = [P]
  1776. set print on
  1777. endif
  1778. ?printname+[   ]+printskill
  1779. set print off
  1780. linecount = linecount+1
  1781. if prinstat = [V] .and. linecount >=23
  1782. wait
  1783. linecount = 0
  1784. endif
  1785. skip
  1786. enddo while .not. eof()
  1787. close databases
  1788. if prinstat = [P]
  1789. set print on
  1790. endif
  1791. ?
  1792. set print oFF
  1793. do case
  1794. case prinstat = [P]
  1795. EJECT
  1796. case prinstat = [V]
  1797. wait
  1798. endcase
  1799. erase temp.ntx
  1800. erase temp1.ntx
  1801. finished = .t.
  1802. enddo while .not. finished
  1803. SET CONSOLE ON
  1804. SET DEVICE TO SCREEN
  1805. RETURN
  1806. *end prinskil
  1807. *__________________________________________________________________________
  1808. procedure honors
  1809. *a procedure that will list all honors [training, merit badge, advancement,
  1810. *etc.] recorded with a start date determined by the user.
  1811. clear
  1812. text
  1813.  
  1814.                       Pre-Council of Achievement Honors Listing
  1815.  
  1816.   This module will print a list of all honors [Advancment, Merits,
  1817.   Training, and Office Elections/Selections] that have been recorded since
  1818.   a date that you will supply.  This list is terribly useful in preparing
  1819.   for a Council of Achievement and can be used to check the data in your 
  1820.   system against your Outpost's paper Advancment records.
  1821.  
  1822.   Verify that your printer is online and ready to work the press any key
  1823.   to continue this module.
  1824.  
  1825.  
  1826.  
  1827. endtext
  1828. wait [ ] to goforit
  1829. ?
  1830. ?
  1831. Accept [  What date do you want for the start of this run? (YYMM) ] to getdate
  1832. ?
  1833. ?[  Preparing and Printing Report.]
  1834. *printing header for the document
  1835. set console off
  1836. set device to printer
  1837. clear
  1838. @ 2,40-LEN(DISTRICT)/2 SAY DISTRICT
  1839. @ 3,40-LEN(TROOPNR)/2 SAY TROOPNR
  1840. @ 4,40-LEN([HONORS LISTING])/2 SAY [HONORS LISTING]
  1841. set device to screen
  1842. set print on
  1843. ?
  1844. ?[Printed on: ]+dtoc(date())
  1845. ?
  1846. ?
  1847. ?[  Advancement Earned:]
  1848. linecount = 9
  1849. select 1
  1850. USE ROSTER
  1851. select 2
  1852. use ADVANCE
  1853. index on earndate to temp1
  1854. set filter to earndate > getdate
  1855. go top
  1856. do while .not. eof()
  1857. store mbrnr to getmember
  1858. select 1
  1859. locate for mbrnr = getmember
  1860. ?trim(fname)+[ ]+trim(lname)+[    ]
  1861. select 2
  1862. ??rank+[ ]+earndate
  1863. linecount = linecount + 1
  1864. skip
  1865. enddo while .not eof()
  1866. IF LINECOUNT > 55
  1867. linecount = 0
  1868. eject
  1869. set print on
  1870. ?
  1871. ?
  1872. ?
  1873. set print off
  1874. ENDIF
  1875. set print on
  1876. ?
  1877. ?
  1878. ?[  Merits Earned:]
  1879. ?
  1880. linecount = linecount + 4
  1881. select 2
  1882. use MERIT
  1883. index on earndate to temp1
  1884. set filter to earndate > getdate
  1885. go top
  1886. recthere = .t.
  1887. do while .not. eof()
  1888. store mbrnr to getmember
  1889. select 1
  1890. locate for mbrnr = getmember
  1891. ?trim(fname)+[ ]+trim(lname)+[    ]
  1892. select 2
  1893. ??badge+[  ]+earndate
  1894. linecount = linecount + 1
  1895. skip
  1896. enddo while .not eof()
  1897. IF LINECOUNT > 55
  1898. linecount = 0
  1899. eject
  1900. set print on
  1901. ?
  1902. ?
  1903. ?
  1904. set print off
  1905. ENDIF
  1906. set print on
  1907. ?
  1908. ?
  1909. ?[  Training Recognition Earned:]
  1910. ?
  1911. linecount = linecount + 4
  1912. select 2
  1913. use TRAINING
  1914. index on datecompl to temp1
  1915. set filter to datecompl > getdate
  1916. go top
  1917. do while .not. eof()
  1918. store mbrnr to getmember
  1919. select 1
  1920. locate for mbrnr = getmember
  1921. ?trim(fname)+[ ]+trim(lname)+[    ]
  1922. select 2
  1923. ??trim(tng)+[  ]+datecompl
  1924. linecount = linecount + 1
  1925. skip
  1926. enddo while .not eof()
  1927. IF LINECOUNT > 55
  1928. linecount = 0
  1929. eject
  1930. set print on
  1931. ?
  1932. ?
  1933. ?
  1934. set print off
  1935. ENDIF
  1936. set print on
  1937. ?
  1938. ?
  1939. ?[  Offices Elected to or Selected to:]
  1940. ?
  1941. linecount = linecount + 4
  1942. select 2
  1943. use OFFICE
  1944. index on begdate to temp1
  1945. set filter to begdate > getdate
  1946. go top
  1947. do while .not. eof()
  1948. store mbrnr to getmember
  1949. select 1
  1950. locate for mbrnr = getmember
  1951. ?trim(fname)+[ ]+trim(lname)+[    ]
  1952. select 2
  1953. ??trim(office)+[  ]+begdate
  1954. linecount = linecount + 1
  1955. skip
  1956. enddo while .not eof()
  1957. set prin off
  1958. IF LINECOUNT > 55
  1959. linecount = 0
  1960. eject
  1961. set print on
  1962. ?
  1963. ?
  1964. ?
  1965. set print off
  1966. ENDIF
  1967. set print off
  1968. set device to screen
  1969. eject
  1970. set console on
  1971. clear
  1972. ?
  1973. ?
  1974. ?
  1975. ?[  Report finished.  Press any key to continue.]
  1976. wait [ ]
  1977. run del *.ntx
  1978. RETURN
  1979. *end honors
  1980. *--------------------------------------------------------------------------
  1981. PROCEDURE PRINCON
  1982. *A PROCEDURE TO INITIALIZE PRINTER CONTROL CHARACTERS USED WITHIN PARTYTRK
  1983. CLEAR
  1984. IF .NOT. PRINDEF
  1985. TEXT
  1986.  
  1987.     RR TRACKER has determined that the printer to be used with this 
  1988.     system has not been defined. Please take a moment to do this now.
  1989.     Before proceeding, please consult your User's Manual for detailed 
  1990.     instructions on how to respond to the questions which will follow.
  1991.  
  1992. ENDTEXT
  1993. WAIT
  1994. ELSE
  1995. TEXT
  1996.  
  1997.     You have chosen to change the printer definition for use with this 
  1998.     system.  Before proceeding, please take a moment to consult your 
  1999.     User's Manual for detailed instructions on how to respond to the 
  2000.     questions which will follow
  2001.  
  2002. ENDTEXT
  2003. WAIT
  2004. ENDIF (.NOT. PRINDEF)
  2005. CLEAR
  2006. PRINIDENT = [   ]
  2007. TEXT
  2008.  
  2009.      The User'S Manual listed 100 printers that this program can support.
  2010.      Please type in the number of the printer you are using:
  2011.  
  2012. ENDTEXT
  2013. @4,34 GET PRINIDENT PICTURE [999]
  2014. READ
  2015. USE PRINTERS
  2016. LOCATE FOR PR_NUMBER = VAL(PRINIDENT)
  2017. STORE PR_NAME TO MPR_NAME
  2018. CLEAR
  2019. ?
  2020. ?
  2021. ?[    You have selected the ]+TRIM(Mpr_name)+[.]
  2022. ?[    RR TRACKER will now update the printer data that it requires]
  2023. ?[    to better support your requirements.]
  2024. ?[    ]
  2025. STORE TRIM(PR_NAME) TO MPRNAME
  2026. ??[.]
  2027. STORE TRIM(PR_SETUP) TO MPRSETUP
  2028. ??[.]
  2029. STORE TRIM(PR_RESET) TO MPRRESET
  2030. ??[.]
  2031. STORE TRIM(PR_6LPI) TO MPR6LPI
  2032. ??[.]
  2033. STORE TRIM(PR_8LPI) TO MPR8LPI
  2034. ??[.]
  2035. STORE TRIM(PR_10CPI) TO MPR10CPI
  2036. ??[.]
  2037. STORE TRIM(PR_12CPI) TO MPR12CPI
  2038. ??[.]
  2039. STORE TRIM(PR_COMPR) TO MPRCOMP
  2040. ??[.]
  2041. STORE TRIM(PR_BDON) TO MBOLDON
  2042. ??[.]
  2043. STORE TRIM(PR_BDOFF) TO MBOLDOFF
  2044. ??[.]
  2045. STORE TRIM(PR_ULON) TO MPRULON
  2046. ??[.]
  2047. STORE TRIM(PR_ULOFF) TO MPRULOFF
  2048. ??[.]
  2049. STORE TRIM(PR_ITON) TO MPRITON
  2050. ??[.]
  2051. STORE TRIM(PR_ITOFF) TO MPRITOFF
  2052. ??[.]
  2053. RELEASE PRINIDENT
  2054. PRINDEF = .T.
  2055. SAVE TO IDENT
  2056. WAIT
  2057. RETURN
  2058. *-------------------------------------------------------------------------
  2059. PROCEDURE FILEBACK
  2060. clear
  2061. text
  2062.                BACKING UP RR TRACKER DATA TO FLOPPY DISK
  2063.  
  2064.  The purpose of this module is to back up data from your hard disk drive
  2065.  onto a formatted floppy disk in Drive A.  If your system is not a Hard Disk
  2066.  system and is, instead, a double floppy disk drive system, back up your data
  2067.  disk by simply copying the data disk you normally use onto a blank disk
  2068.  using the "DISKCOPY" command.
  2069.  
  2070.  If you wish to perform this backup function now, press "Y" at the next
  2071.  prompt.  Otherwise, simply press the ENTER key at the prompt and you will be
  2072.  taken back to the TROOP TRACKER Main Menu.
  2073.  
  2074. endtext
  2075. wait [ Press Y or Enter, now. ] to runback
  2076. if len(runback) = 0
  2077. RETURN
  2078. endif
  2079. *verifying that a blank disk is in backup drive
  2080. ?
  2081. ?
  2082. ?[  PLEASE ENSURE THAT A FORMATTED, BLANK DISK IS IN DRIVE ]+BACKDRIVE+[: NOW.]
  2083. WAIT
  2084. clear
  2085. ?
  2086. ?[  Copying data files to backup diskette.  Please stand by.]
  2087. ?
  2088. SET CONSOLE OFF
  2089. copy FILE ROSTER.dbf TO &BACKDRIVE:\ROSTER.DBF
  2090. copy FILE ACTYLOG.DBF TO &BACKDRIVE:\ACTYLOG.DBF
  2091. copy FILE ADVANCE.DBF TO &BACKDRIVE:\ADVANCE.DBF
  2092. copy FILE ATNDGEN.DBF TO &BACKDRIVE:\ATNDGEN.DBF
  2093. copy FILE ATTEND.DBF  TO &BACKDRIVE:\ATTEND.DBF
  2094. copy FILE FORMRMBR.DBF TO &BACKDRIVE:\FORMRMBR.DBF
  2095. copy FILE MERIT.DBF TO &BACKDRIVE:\MERIT.DBF
  2096. copy FILE OFFICE.DBF TO &BACKDRIVE:\OFFICE.DBF
  2097. copy FILE RETURN.DBF TO &BACKDRIVE:\RETURN.DBF
  2098. copy FILE TRAINING.DBF TO &BACKDRIVE:\TRAINING.DBF
  2099. COPY FILE UNIFORM.DBF TO &BACKDRIVE:\UNIFORM.DBF
  2100. SET CONSOLE ON
  2101. ?
  2102. ?[Data has been copied.  Please place this disk in a safe storage place.]
  2103. RETURN
  2104. *end fileback
  2105. *___________________________________________________________________________
  2106. PROCEDURE ATTEND
  2107. *A PROGRAM THAT WILL ALLOW OPERATOR TO LOG MEETING ATTENDANCE
  2108. *THE PROGRAM WILL SOLICIT THE DATE OF THE MEETING AND INPUT THAT DATA TO
  2109. *EACH member's RECORD THE OPERATOR INDICATES HAS PARTICIPATED IN THE ACTIVITY
  2110. CLEAR
  2111. TEXT
  2112.  
  2113.                              OUTPOST ATTENDANCE LOG
  2114.  
  2115.   After you read this, you will be asked to provide the date of the meeting
  2116.   for which you want to log attendance.  Once the computer has the re-
  2117.   quired data, it will then go through the Outpost roster asking you
  2118.   if each member attended the meeting.  At the prompt, simply type "Y" or
  2119.   "N" for each name. RR TRACKER does not keep attendance data on Commanders.
  2120. endtext
  2121. WAIT
  2122. *Obtaining the needed data for subsequent posting
  2123. info = .f.
  2124. do while .not. info
  2125. clear
  2126. ?
  2127. ?
  2128. accept [  What is the date of the meeting?  (YYMMDD)  ] to meetdate
  2129. if len(trim(meetdate)) = 0
  2130. return
  2131. endif
  2132. clear
  2133. ?
  2134. ?[  The meeting date is: ]+meetdate
  2135. ?
  2136. ?
  2137. wait [  Correct? (Y/N)  ] to correct
  2138. store upper(correct) to correct
  2139. if correct = [Y]
  2140. info = .t.
  2141. else
  2142. info = .f.
  2143. endif
  2144. enddo
  2145. clear
  2146. text
  2147.  
  2148.     You will now be presented with the name of each member of
  2149. the Outpost.  Answer (Y/N) to each name prompt as that individual
  2150. participated in the activity previously described.
  2151.  
  2152. endtext
  2153. WAIT
  2154. *computing date for filter to roster
  2155. store [/]+substr(meetdate,1,2) to tvlyear
  2156. store substr(meetdate,3,2) to tvlmonth
  2157. store [/]+substr(meetdate,5,2) to tvlday
  2158. store tvlmonth+tvlday+tvlyear to tvlfilt
  2159. use ROSTER
  2160. index on lname+fname to temp
  2161. SET FILTER TO mbrnr < 500 .and. BEGDATE <=ctod(tvlfilt)
  2162. GO TOP
  2163. select b
  2164. use ATTEND
  2165. APPEND BLANK
  2166. REPL MBRNR WITH 0
  2167. REPL DATE WITH MEETDATE
  2168. select a
  2169. do while .not. eof()
  2170. clear
  2171. ?[  Did ]+trim(fname)+[ ]+trim(lname)+[ attend?]
  2172. wait [  (Y/N?)  ] to part
  2173. store upper(part) to part
  2174. if part = [N]
  2175. Skip
  2176. loop
  2177. endif
  2178. store mbrnr to lognr
  2179. select b
  2180. append blank
  2181. replace mbrnr with lognr
  2182. replace date with meetdate
  2183. select a
  2184. skip
  2185. enddo
  2186. close databases
  2187. run del *.ntx
  2188. RETURN
  2189. *end ATTEND
  2190. *___________________________________________________________________________
  2191. PROCEDURE REGREM
  2192. *REGISTRATION REMINDER SCREEN
  2193. CLEAR
  2194. TEXT
  2195.  **********************************                 _______
  2196.  *        RANGER TRACKER          *            ____|__     |               (R)
  2197.  *         VERSION 1.0            *         --|       |    |-------------------
  2198.  *      EVALUATION VERSION        *           |   ____|__  |  Association of
  2199.  * An Automated Records System for*           |  |       |_|  Shareware
  2200.  *      Royal Ranger Outposts     *           |__|   o   |    Professionals
  2201.  *                                *         -----|   |   |---------------------
  2202.  **********************************              |___|___|    MEMBER
  2203.   Copyright @1993 Robert Barrentine
  2204.  
  2205.   The program you are using is a SHAREWARE program. You may use this program
  2206.   for 60 days without paying the registration. If you decide you like this
  2207.   program and are going to continue to use it, you must register the program
  2208.   with Robert Barrentine, the copyright holder. Registration will bring you
  2209.   unlimited written support, unlimited toll-free telephonic support, the next
  2210.   update to RANGER TRACKER, when issued, free, and a disk containing a program 
  2211.   which will remove this reminder screen.
  2212.  
  2213.   To register RANGER TRACKER, print out the REGISTER.DOC text file, fill it in,
  2214.   and mail the form, with your check for US$35.00 to the address on the form.
  2215.   Please support the SHAREWARE concept and register this program.
  2216.  
  2217. ENDTEXT
  2218. WAIT
  2219. *--------------------------------------------------------------------------
  2220.